package com.richpay.basejava.base17;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 集合:动态存放对象的容器(工具)；
 * 集合的特点:
 * A:可以存放任意数据类型的数据(集合中每一个元素的类型是Object类型的)
 * B:集合的大小可以动态伸缩
 * C:集合中只能存放引用数据类型的对象，基本数据类型不能直接存放，
 * 但JDK1.5给我们提供了自动装箱和拆箱的功能，因此对用户来说，使用上没有什么影响。
 * 集合的操作：
 * 1.添加
 * boolean add(E e):将指定元素e添加到当前集合中，如果添加后集合发生了变化则返回true，否则返回false。
 * boolean addAll(Collection<? extends E> c):将集合c中的元素追加到当前集合的后面，如果添加后集合发生了变化则返回true，否则返回false。
 * 2.修改
 * 3.删除
 * void clear():清除当前集合中所有的元素
 * boolean remove(Object o):将对象o从集合中删除
 * boolean removeAll(Collection<?> c):将当前集合中和集合c中元素相同的元素删除。
 * 4.获取
 * int hashCode():返回当前对象的哈希值
 * Iterator<E> iterator():返回集合中的迭代器对象
 * boolean retainAll(Collection<?> c):获取当前集合和c集合中都有的元素
 * int size():返回当前集合中元素的个数
 * Object[] toArray():将当前集合转化成对象数组并返回
 * 5.判断
 * boolean contains(Object o):判断o对象是否在当前集合中，如果在返回true,否则返回false
 * boolean containsAll(Collection<?> c):判断集合c中的所有元素是否都在当前集合中，在返回true,否则返回false
 * boolean equals(Object o):判断o中的元素是否都和当前集合中的元素相同，相同返回true,否则返回false
 * boolean isEmpty():判断当前集合中的元素个数是否为0,为0返回true, 否则返回false
 */
public class CollectionDemo01 {
    public static void main(String[] args) {
        //1.实例化集合对象
        Collection<Object> collection = new ArrayList<>();
        // boolean add(E e):将指定元素e添加到当前集合中,如果添加后集合发生了变化则返回true,否则返回false
        collection.add("张三");
        collection.add(20);
        collection.add("杭州");
        collection.add("北京");
        collection.add("上海");
        collection.add("广州");
        collection.add("深圳");
        System.out.println(collection);

        Collection<Object> subCollection = new ArrayList<>();
        subCollection.add("邯郸");
        subCollection.add("安阳");
        subCollection.add("郑州");
        subCollection.add("驻马店");
        System.out.println(subCollection);

        //void clear()：清除当前集合中所有的元素
        //collection.clear();//

        //boolean addAll(Collection<? extends E> c):将集合c中的元素追加到当前集合的后面,如果添加后集合发生了变化则返回true,否则返回false
        collection.addAll(subCollection);
        //collection.removeAll(subCollection);
        boolean b = collection.remove("邯郸");
        System.out.println("b=" + b);
        /*
         * AbstractCollection<E>重写了toString()方法，返回集合中元素的形式为：
         * 返回此 collection 的字符串表示形式。该字符串表示形式由 collection 元素的列表组成，
         * 这些元素按其迭代器返回的顺序排列，并用方括号 ("[]") 括起来。相邻元素由字符 ", "（逗号加空格）分隔
         */
        System.out.println(collection);
    }

}
